background-image:url(images/title-image.png) background-size: 35% background-position: 90% 95% # R によるデータ解析入門 ### ソフトウェアカーペントリー日本<br>Beyond AI <span style = 'font-size: 120%;'>2021/04/02 – 2021/04/16</span> <br><br><img src="https://beyondai.jp/images/common/logo.svg" alt="drawing" height="75"> --- ## 一日目 アウトライン - B'AIの紹介 - スタッフの紹介 - ソフトウェアカーペントリーの紹介 - ワークショップのやり方について - Ice breaker - ソフトのインストール **ワークショップの録画・録音・撮影・スクリーンショット等は<br>ご遠慮ください** --- ## B'AIの紹介 --- ### スタッフの紹介 .pull-left[ ニッタ ジョエル(インストラクター) @joel_nitta - 特任助教 - 理学系岩崎研究室 - 研究テーマ:シダ植物の進化、生態学、ゲノム解析 - 趣味:マラソン ] .pull-right[ <img src="https://www.joelnitta.com/project/community_ecology/featured_hudf7b8620e192de66d79d1f7e36df7824_885020_540x0_resize_q75_lanczos.jpg" alt="drawing" height="300"> ] --- ### スタッフの紹介 .pull-left[ 武井陸良(インストラクター) @rikutakei - 研究員 - アラバマ大学バーミンガム校 - 研究テーマ:痛風の遺伝要因、ゲノム解析 - 趣味:ロッククライミング ] .pull-right[  ] --- ### スタッフの紹介 .pull-left[ ケリートム(ヘルパー) @tomkxy - 研究員(ポスドク) - 理化学研究所 生命医科学研究センター - 研究テーマ:多能性幹細胞、がんゲノム解析、シングルセルRNA解析 - 趣味:日本語を勉強、映画、旅行 ] .pull-right[ <img src="images/tom_profile.jpg" alt="drawing" height="300"> ] --- ### スタッフの紹介 .pull-left[ 西田 孝三(ヘルパー) @kozo2 - 技術員 - 理化学研究所 生命機能科学研究センター - 研究テーマ:パスウェイ関連データの統合・可視化・解析 - 趣味:オープンサイエンスコミュニティの運営 ] .pull-right[ <img src="http://bioconductor.org/images/cab/kozo.png" alt="drawing" height="250"> ] --- ### スタッフの紹介 .pull-left[ 山口雅美(ヘルパー) @Masami20532423 - 図書館員 - グリフィス大学 (オーストラリア) - カーペントリーズのインストラクター、トレイナー、Executive Council Member - 好きな食べ物: ポップコーン、おせんべい ] .pull-right[ <img src="images/Masami_in_Lib.JPG" alt="drawing" height="250"> ] --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-0.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-1.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-2.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-3.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-4.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-5.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-6.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-7.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-8.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-9.png) background-position: center background-size: contain --- background-image:url(images/Beyond_AI-TheCarpentriesPresentation-10.png) background-position: center background-size: contain --- ### 行動規範 どなたでも気兼ねなくワークショップに参加できるように、[行動規範](https://carpentries-coc.readthedocs.io/ja/latest/topic_folders/policies/code-of-conduct.html)があります。 行動規範に反する行為があった場合は、[インシデントレポートフォーム](https://docs.google.com/forms/d/e/1FAIpQLSeYqO37p0P-5JsEoF-E_edpZM5iRdFxWHTFqILo6LzqGS33YQ/viewform?fbzx=-8556883400541824673)で報告することができます。 --- ### SWCワークショップの流れ - スライドによる内容の説明 - **ライブコーディング** --- ### ライブコーディングとは? - インストラクターが打っていると同じコードを同時に自分のパソコンで打っていく -- - インストラクターが参加者の理解を確認する(「〜が出来ましたか?」) - zoomの「反応」をクリック→「はい」、「いいえ」 .center[<img src="images/zoom_reactions.png" alt="drawing" height="200">] --- ### ライブコーディングとは? 何か問題があった時に**声をかける** -- - zoomの「反応」をクリック→「手を挙げる」 あるい(また)は - zoomのチャットに質問を投げる .center[<img src="images/zoom_reactions_hand.png" alt="drawing" height="200">] --- ### コラボレイティブ・ノート [Googleドキュメント](https://docs.google.com/document/d/1G11-8sXl5hbb71ky-YmeHpDvPWXkp0Y-Q65V-59-z78/edit#heading=h.414fvxu27my1)にコードを貼っておきます。 もしインストラクターが進んで、コードが見えなくなったら、<br>Googleドキュメントを参照してください。 ### 参加者も自由に書き込んでいいです --- ### 画面設定のおすすめ  --- ### フィードバックの種類 - クイズ(zoomの投票機能) - ディスカッション(ブレークアウトルーム) - 感想(googleフォーム) - ワークショップ前後の[アンケート](https://carpentries.typeform.com/to/CvmMM8re?slug=2021-04-02-todai-online-ja) --- ### Zoomの使い方のお願い .pull-left[ - カメラを常にオン - 名前の変更 - 例:東大 太郎(理学部 M2) - インストラクター、ヘルパー、見学に来ている方はそのステータスを記入 ] .pull-right[ .center[<img src="images/zoom_name_change.png" alt="drawing">] .center[<img src="images/zoom_menu.png" alt="drawing" height="50">] ] ### 積極的に発言してください!🙂 --- ### Ice breaker 4−5人ずつブレークアウトルームで自己紹介しましょう - どうやってRを知りましたか? - 研究テーマは何ですか? - 趣味は何ですか? --- ### ソフトのインストール - **R** https://cloud.r-project.org/ - **RStudio** https://rstudio.com/products/rstudio/download - **Zoom** https://zoom.us/jp-jp/home.html - **tidyverse** - `install.packages("tidyverse")` [ワークショップのホームページ](https://swcarpentry-ja.github.io/2021-04-02-todai-online-ja/) --- ## 二日目 アウトライン - 一日目のおさらい - RStudio入門 - Rを計算機としての使用 - 変数 (休憩) - 関数とパッケージ - ヘルプ機能 - RStudioを使ったプロジェクト管理 --- ### 一日目のおさらい Zoomのバージョンによっては反応ボタンを再度押す必要があるかもしれません .center[<img src="images/zoom_reactions.png" alt="drawing" height="200">] --- ### スタッフの紹介 .pull-left[ 横田聡(ヘルパー) @megane0_0 - 眼科医、客員研究員 - 神戸アイセンター病院 - カーペントリーズの<br>インストラクター - 研究テーマ:緑内障、<br>網膜変性疾患 - 趣味:ゲーム ] .pull-right[ .center[<img src="images/yokota.jpg" alt="drawing" height="250">] ] --- ### なぜRを使うのか - 無料だから - パッケージが豊富 - Rコードを使うことによって統計解析の再現性が上がる --- ### RStudioって何? - 総合開発環境(IDE - Integrated Development Environment) - コードを書く場所(エディタ)とそれを実行するプログラム(R)が合わさったソフトウェアのこと - プロジェクト管理など、他にも便利機能がついています --- ### チャレンジ 以下の変数名のうち、Rで使える変数名はどれでしょう?(複数可) 1. min-height 2. max.height 3. _age 4. celsius2kelvin 5. MaxLength --- ### 関数とは? 何かの値(インプット)を受けて、処理して、計算結果(アウトプット)を返すもの .center[<img src="https://manamina.valuesccg.com/uploads/content/image/12292/__.png" alt="drawing" height="100">] .footnote[https://manamina.valuesccg.com/articles/756] --- ### 関数とは? 関数の書き方: `関数名(引数)` 関数の例:`print()`、`paste()` --- ### チャレンジ `toupper`はインプットの文字列を大文字にする関数です。`toupper`を使った、私の名前("joel")を大文字にするコードはどれが正しいでしょうか? 1. toupper["joel"] 2. toupper(joel) 3. toUpper("joel") 4. toupper("joel") 5. toupper, "joel" --- ### パッケージとは? 似たような目的を持つ関数のまとまり 例: - 図を作るパケージ`ggplot2` - エクセルデータを読み込むパケージ`readxl` `install.packages()`でパッケージをインストールする - 一回でいい `library()`でパッケージをロードする(パケージの関数が使えるようにする) - Rを立ち上げる度にする必要あり --- ### RStudio によるプロジェクト管理 よくあること: .center[<img src="images/bad_layout.png" alt="drawing" height="400">] --- ### RStudio によるプロジェクト管理 よくあること: .center[<img src="images/bad_layout_zoom.png" alt="drawing" height="400">] --- ### 問題 1. データのバージョン(原本か修正版か)が分かりません 2. 知りたい結果(図など)を探すのに時間がかかります 3. 図とその図を出力するコードの対応が分かりません -- 以上の問題を解決することによって、**しばらく手をつけていなくても、簡単にプロジェクトを再開できる** --- ### RStudioで新しいプロジェクトを作りましょう 1. "File" メニューボタンをクリックし、"New Project"をクリック 2. "New Directory"をクリック 3. "Empty Project"をクリック 4. プロジェクトを保存するディレクトリの名前を入力(例 "todai-r-workshop") 5. "Create Project" ボタンをクリック --- ### データディレクトリにデータを保存する ギャップマインダーのデータを[ここから](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv)ダウンロードしましょう 1. ファイルをダウンロードする(CTRL + S、右マウスクリック -> 「名前を付けて保存する」、またはファイル ->「ページを名前を付けて保存する」) 2. 確実に `gapminder_data.csv` という名前で保存しましょう 3. プロジェクトの中にある `data/` フォルダに保存しましょう このデータは後で読み込んで色々調べます --- ### Gapminderとは? .pull-left[ 様々な国の経済的な指標が<br>入っているデータセット - https://www.gapminder.org/ - [Ted Talk](https://www.ted.com/talks/hans_rosling_let_my_dataset_change_your_mindset) - [Ted Talkの翻訳](http://www.aoky.net/articles/hans_rosling/hans_rosling_at_state.htm) ] .pull-right[ <img src="data:image/png;base64,#index_files/figure-html/plot-gapminder-1.png" width="504" /> ] --- ### プロジェクト管理の最適なやり方 1. データ入力とデータ解析を分けましょう 2. データは読み込み専用にしましょう 3. 生成されたアウトプットを捨てても良いようにしましょう 4. コメントとREADMEファイルでメモを書きましょう --- ### フィードバック [このリンク](https://docs.google.com/forms/d/e/1FAIpQLSd9Xwa2wK8xqBipbRy1kWQZ7LFAMSBMhy2ccrMo-XR3o71pBg/viewform)を使って、下の二つを教えてください: - 今日のワークショップでうまく行ったこと - 今日のワークショップであまりうまく行かなかったこと --- ## 三日目 アウトライン - 二日目のおさらい - データ型について - ベクトルの使い方 (休憩) - データフレームの操作 --- ### 三日目 教材 - [データの構造](https://swcarpentry-ja.github.io/r-novice-gapminder/ja/_episodes/04-data-structures-part1/index.html) - [ベクトル化](https://swcarpentry-ja.github.io/r-novice-gapminder/ja/_episodes/09-vectorization/index.html) - [データの部分集合化](https://swcarpentry-ja.github.io/r-novice-gapminder/ja/_episodes/06-data-subsetting/index.html) - [dplyrによるデータフレームの操作](https://swcarpentry-ja.github.io/r-novice-gapminder/ja/_episodes/13-dplyr/index.html) --- ### 二日目のおさらい もしデータのダウンロードがうまく行かなかったら... このdropboxのリンクを試して見てください: https://www.dropbox.com/s/p0am7wdamx6tyur/gapminder_data.csv?dl=0 --- ### チャレンジ 以下のうち、`bmi`から2つ目の数値だけを抜き出す事ができるのはどれでしょう? 1. bmi[bmi > 15] 1. bmi[c(FALSE, TRUE)] 1. bmi["2"] 1. bmi[bmi < 25] 1. bmi[-2] --- ### チャレンジ `mean()`関数は入力されたベクトルの平均を計算してくれます。`age`の中に平均値以上の値はいくつ入っていますか? ```r age <- c(15, 23, 48, 32, 66) ``` 1. 1 1. 2 1. 3 1. 4 1. 5 --- ### データフレームについて **データフレーム** = 表形式データ - エクセルとの大きな違い:各列は同じデータ型を<br>持たなければならない - tidyverseパッケージでは、`tibble`と呼ばれる .center[<img src="images/dataframe-example.png" alt="drawing" height="300">] --- ### データフレームの操作 多くの場合、データ解析に入る前にデータを整える必要がある("data wrangling", "data munging") - 今日はtidyverseによるデータフレームの操作の仕方を学びます - Rでは、**どんな目的でも、複数のやり方**があります - まずは、**やり易い方から始めましょう** --- ### チャレンジ(グループ) gapminderデータから、日本だけに絞って、さらに人工と年の二つの列だけを選んで、これを`japan_pop`として保存してください。 ブレークアウトルームから戻ったら、そのコードをチャットに貼ってください。 --- ### チャレンジ(グループ) パイプを使って、gapminderデータをもっとも最近の年だけに絞って、人工と国の二つの列だけを選んで、人工の多い方から順番を変えてください。 ブレークアウトルームから戻ったら、そのコードをチャットに貼ってください。 --- ## 四日目 アウトライン - 三日目のおさらい - データフレームの操作(続き) (休憩) - `ggplot2`パッケージについて - レイヤーの仕組み - `ggplot()`関数を使って図を作成してみる --- ## 五日目 アウトライン - 四日目のおさらい - グループ別に色や形を変えてみる - `ggsave()`関数で図を保存する (休憩) - `rmarkdown`でレポートを作成する(仮)